package com.baizhi.mathx;

/**
 * 计算1-10000之内所有的素数，并统计计算时间
 */
public class MathTest {


    public static void main(String[] args) {

        long start = System.currentTimeMillis();

        for (int i = 1; i <= 100000; i++) {
            if(isPrimeNumber2(i)){
                System.out.println(i);
            }
        }

        long end = System.currentTimeMillis();
        System.out.println("耗时："+(end-start) + "ms"); //1374   1326  1350
                                                       // 576    492   509
                                                       //108     94    95
    }


    /**
     * 输入一个整数判断其是否是素数
     * @param m
     */
    public static boolean isPrimeNumber(int m){
        if(m < 1)
            return false;
        if(m == 2 || m == 3)
            return true;
        if(m % 2 == 0 ){
            return false;
        }

        for (int i = 3; i <= m/2; i+=2) {
            if(m % i ==0){
                return false;
            }
        }
        return true;

    }



    public static boolean isPrimeNumber1(int m){
        if(m == 1){
            return false;
        }
        if(m == 2){
            return true;
        }

        for (int i = 3; i <= m/2; i++) {
            if(m % i == 0){
                return false;
            }
        }

        return true;
    }



    public static boolean isPrimeNumber2(int m){
        if(m==1){
            return false;
        }
        for (int i = 2; i <= Math.sqrt(m); i++) {
            if(m % i == 0){
                return false;
            }
        }

        return true;
    }
}


